
function ResultatsController($scope, Recherche, StringManager) {
    var vm = this;

    var RechercheService = new Recherche();
    vm.RechercheCl = new RechercheClasse().init();
    vm.CatalogueCl = new Catalogue().init();
    vm.sejourChoisi = null;

    vm.chargerLesFiltres = function(filtre) { 
        return RechercheService.retourneFiltresRecherche(filtre);
    }
    
    // retourne les filtres passés ds l'url
    // appel fonction serveur pour retourner en session les résultats de la recherche
    var retournerRecherchePageResultatsSession = function() {

        // ensuite on sélectionne les filtres ds les listes de la recherche
        vm.RechercheCl.FiltresUrlVersListes();

        lancerLaRecherche('');
    }

    var initialiserLesFiltresDeRecheche = function () {
        RechercheService.retournerLesFiltresAccueil().then(function(e) {
            vm.RechercheCl.initListes( e.data );

            // ensuite on sélectionne les filtres ds les listes de la recherche
            retournerRecherchePageResultatsSession();

            // Init. évènement lorsque la liste des filtres est changée

                $scope.$watch(angular.bind(vm, function () {
                    return vm.RechercheCl;
                }), function (newVal, oldVal) {
                        vm.RechercheCl.ListesVersFiltresUrl( true );
                },true);

                // on bind sur les paramètres de l'url
                $scope.$watch(angular.bind(vm, function () {
                    return vm.RechercheCl.urlParams;
                }), function (newVal, oldVal) {
                    
                    if( newVal != oldVal ) {
                        vm.preparerLaRecherche();
                    }
                },true);
        })

    }

    vm.msFiltrePaysChange = function(data) {
        vm.RechercheCl.filtrerLesRegionsSelonLePays();
    }

    vm.preparerLaRecherche = function() {
        
        if( vm.RechercheCl.auMoinsUnFiltreSaisie() > 0 ) {

           var url = vm.RechercheCl.ListesVersFiltresUrl( false );

           lancerLaRecherche(url);
        }        
    }

    var lancerLaRecherche = function( url ) {

        RechercheService.recherchePageResultats( url ).then(function(e) {

            vm.CatalogueCl.init( e.data );
            if( url != '') {
                ServiceAnalytics.pageNotif( window.location.pathname + window.location.search, 'résultats');
            }
        })
    }

    vm.selectionnerSejour = function(sejour) {
        if( vm.sejourChoisi == sejour ) {
            vm.sejourChoisi = null;
        } else {
            vm.sejourChoisi = sejour;
        }
        
    }

    initialiserLesFiltresDeRecheche();
}
